#include "basewidget.h"

#include <QHBoxLayout>
#include <QLabel>
#include <QPushButton>
#include "../utils/widgetuitl.hpp"

widgetkit::AvatarItem::AvatarItem(const QIcon& avatar, const QString& name)
{
    // 1.设置控件大小
    QSize itemSize(70, 80);
    this->setFixedSize(itemSize);

    // 2. 垂直布局
    QVBoxLayout* layout = new QVBoxLayout();
    layout->setSpacing(3);
    layout->setContentsMargins(0, 0, 0, 0);
    layout->setAlignment(Qt::AlignHCenter);
    this->setLayout(layout);

    // 2-1 头像
    avatarBtn = new QPushButton(this);
    avatarBtn->setIcon(avatar);
    avatarBtn->setFixedSize(45, 45);
    avatarBtn->setIconSize(QSize(45, 45));
    avatarBtn->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    avatarBtn->setStyleSheet("QPushButton { border: none;  background-color: transparent; }");
    // border: /*1px solid rgb(218, 218, 218);*/

    // 2-2 名字
    nameLabel = new QLabel();
    QFont font("微软雅黑", 10);
    nameLabel->setFont(font);
    nameLabel->setAlignment(Qt::AlignTop | Qt::AlignHCenter);
    nameLabel->setText(utils::StringUtil::stringTruncated(name, itemSize.width() - 10, font));
    // nameLabel->setText(name);

    // // 2-2-1 名字长度截断
    // QFontMetrics metrics(font);
    // int nameWidth = metrics.horizontalAdvance(name);
    // const int MAX_WIDTH = itemSize.width() - 5;
    // if(nameWidth >= MAX_WIDTH) {
    //     QString ellipsis = "...";
    //     int ellipsisWidth = metrics.horizontalAdvance(ellipsis);
    //     int realNameWidth = MAX_WIDTH - ellipsisWidth;
    //     // 取左侧 n 个字符
    //     QString truncatedName = name.left(name.length() * realNameWidth / nameWidth);
    //     nameLabel->setText(truncatedName + ellipsis);
    // }

    // 3. 添加到布局中
    layout->addWidget(avatarBtn);
    layout->addWidget(nameLabel);
}

QPushButton* widgetkit::AvatarItem::getAvatarBtn()
{
    return avatarBtn;
}

